//app.js

var template = require('./template/template.js'); 
const quote = require('utils/quoteConfig.js') //统一引入文件
const Recorder = require('./vendor/skegn_weapp_sdk_v1/index.js').Recorder //引入外部录音接口
const api = require('utils/api.js');
const tools = require('utils/tools.js');
const aldstat = require("utils/ald-stat.js");
App({
  onLaunch() {
    let _self = this;

    if (wx.getRecorderManager) {

    } else {
      // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
      wx.showModal({
        title: '提示',
        content: '当前微信版本过低，部分功能可能无法使用，建议升级到最新微信版本后重试。'
      })
    }

    //获取用户的设备信息
    wx.getSystemInfo({
      success: (res) => {
        console.log('用户设备信息', res)
        _self.globalData.SDKVersion = res.SDKVersion.split('.').join('') - 0;
        _self.globalData.scrollHeight = (750 / res.screenWidth) * res.windowHeight;
        console.log('微信sdk版本', _self.globalData.SDKVersion);
        tools.judgeSDKVersion(_self.globalData.SDKVersion);
      }
    })
    wx.getStorage({
      key: 'openid',
      success: (res) => {
        console.log(res.data)
        if (res.data) {
          console.log('本地openid获取成功', res.data)
          _self.globalData.openId = res.data
          //检验session是否过期  过期的session需要重新登录
          wx.checkSession({
            success: (res) => {
              //session 未过期，并且在本生命周期一直有效
              console.log('session未失效!')
              // 获取本地缓存的用户信息 用户信息为空需要重新获取并更新session
              wx.getStorage({
                key: 'userInfo',
                success: (res) => {
                  console.log('用户信息未失效!')
                  _self.globalData.userInfo = res.data;
                },
                fail: (res) => {
                  _self.getSession();
                }
              })
            },
            fail: (res) => {
              console.log(res);
              //重新登录
              _self.getSession();
            },
          });
        } else {
          _self.getSession();
        }
      },
      fail: (res) => {
        console.log(res)
        _self.getSession()
      }
    })
    // 获取用户是否登录
    wx.getStorage({
      key: 'loginStatus',
      success: (res) => {
        console.log(res)
        _self.globalData.loginStatus = res.data
      },
      fail: (res) => {
        _self.globalData.loginStatus = false
      }
    })

    // 登录
    wx.login({
      success: (res) => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    // 获取用户信息
    // wx.getSetting({
    //   success: res => {
    //     if (res.authSetting['scope.userInfo']) {
    //       // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
    //       wx.getUserInfo({
    //         success: res => {
    //           // 可以将 res 发送给后台解码出 unionId
    //           this.globalData.userInfo = res.userInfo

    //           // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
    //           // 所以此处加入 callback 以防止这种情况
    //           if (this.userInfoReadyCallback) {
    //             this.userInfoReadyCallback(res)
    //           }
    //         }
    //       })
    //     }
    //   }
    // })
  },
  onShow: function (options) {
    let that = this;

    console.log('进入小程序获取到的数据', options);

  },

  
  getSession() {
    let _self = this
    // 用户只要出现登录获取session，就重置登录状态
    wx.setStorage({
      key: 'loginStatus',
      data: false,
    })
    //调用登录接口
    wx.login({
      success: (data) => {

        _self.globalData.wxCode = data.code;

        let dataDic = {
          appid: _self.globalData.appId,
          secret: _self.globalData.appSecret,
          js_code: data.code,
        };

        // 通过传code给服务器，调用微信接口获取用户openid
        api.methodRequestWechatAPI({
          dataDic,
          success: (res) => {
            console.log(res.data,'142')
            if (res.data.code != 0) {
              console.log(res.data,'143')
            } else {
              console.log(res.data.data.openid,'146')
              _self.globalData.openId = res.data.data.openid;
              _self.globalData.session_key = res.data.data.session_key;
              wx.setStorage({
                key: 'openid',
                data: res.data.data.openid
              })
              wx.setStorage({
                key: 'session_key',
                data: res.data.data.session_key,
              })
            }
          },
          fail: (res) => {
            console.log('拉取用户openid失败，将无法正常使用开放接口等服务', res)
          },
          complete: (res) => {
            console.log(res);
          }
        });

        //获取用户信息
        wx.getUserInfo({
          success: (res) => {
            _self.globalData.userInfo = res.userInfo
            wx.setStorage({
              key: 'userInfo',
              data: res.userInfo,
            })
            typeof cb == "function" && cb(_self.globalData.userInfo)
          },
          fail: (res) => {
            console.log('wx.getUserInfo 接口调用失败，将无法获取用户信息', res)
          }
        })
      },
      fail: (err) => {
        console.log('wx.login 接口调用失败，将无法正常使用开放接口等服务', err)
      }
    });
  },
  getUserInfo() { //获取用户信息
    let _this = this;

    wx.getStorage({
      key: 'userInfo',
      success: function (res) {
        console.log('用户信息未失效!', res)
        _this.globalData.userInfo = res.data;
        return
      },
      fail: function (err) {
        console.log('缓存中获取用户信息失败', err)
        wx.getSetting({
          success: function (res) {
            if (!res.authSetting['scope.userInfo']) {
              console.log('用户没有授权用户信息，暂无法获取')
              return
            } else {
              wx.getUserInfo({
                success: function (res) {
                  console.log('成功获取用户信息')
                  _this.globalData.userInfo = res.userInfo
                  wx.setStorage({
                    key: 'userInfo',
                    data: res.userInfo,
                    success: function (res) {
                      console.log('userInfo写入缓存成功', res)
                    }
                  })
                },
                fail: function (res) {
                  console.log('wx.getUserInfo 接口调用失败，将无法获取用户信息', res)
                }
              })
            }
          }
        })
      }
    })
  },

  //验证用户信息授权
  checkImpower(cb) {
    let _self = this

    if (_self.globalData.userInfo) {
      typeof cb == "function" && cb(_self.globalData.userInfo)
    }

    wx.getSetting({
      success(res) {
        console.log('1',res)
        if (res.authSetting['scope.userInfo'] != true) {
          wx.authorize({
            scope: 'scope.userInfo',
            success: (res) => {
              wx.getUserInfo({
                success: (res) => {
                  _self.globalData.userInfo = res.userInfo
                  typeof cb == "function" && cb(res.userInfo)
                }
              })
            },
            fail: (res) => {
              wx.showModal({
                title: '温馨提示',
                content: '您暂未授权提供您的用户信息，我们将无法展示您的头像和名称！',
                showCancel: false,
                cancelText: '确定',
                confirmText: '去授权',
                success: (res) => {
                  wx.openSetting({})
                }
              })
            },
          })
        } else {
          typeof cb == "function" && cb(_self.globalData.userInfo)
        }
      },
      fail: (res) => {
        typeof cb == "function" && cb(false)
      }
    })
  },
  //检查用户录音授权 已经授权返回true 未授权会提示用户授权并返回授权结果
  checkRecord(cb) {
    let _self = this
    wx.getSetting({
      success: (res) => {
        console.log(res)
        if (res.authSetting['scope.record'] != true) {
          wx.authorize({
            scope: 'scope.record',
            success: (res) => {
              typeof cb == "function" && cb(true)
            },
            fail: () => {
              wx.showModal({
                title: '温馨提示',
                content: '您暂未授权使用录音功能，这可能会影响部分功能使用！',
                showCancel: false,
                cancelText: '确定',
                confirmText: '去授权',
                success: (res) => {
                  wx.openSetting({})
                }
              })
            }
          })
        } else {
          typeof cb == "function" && cb(true)
        }
      },
      fail: (res) => {
        typeof cb == "function" && cb(false)
      }
    })
  },
  globalData: {
    template:template,
    videoCacheObj: {},
    AlreadyPracticed: {}, //已经练习过的视频列表
    SDKVersion: null,
    userInfo: null,
    result: null, //句子评分结果
    wordDetailList: null,  // 单词本详情页一维数组
    scrollHeight: null, //可用窗口高度
    appId: 'wx93558e24cfb31b4b', //微信小程序的appId
    appSecret: 'c83a5769a16e57b93d78c42c639a42fd', //微信小程序的密钥
    appkey: '049BD15C6FC04BD80808A601DC46E50515CBEEA33FB29AB4',
    wxCode: null,
    session_key: null,
    openId: null,//小程序中用户唯一标志符
    access_token: null, //访问令牌
    loginStatus: false, //登录状态
    videoUrl: "https://video.acadsoc.com.cn",
    apiUrl: "https://ies.acadsoc.com.cn",

  //  apiUrl: "http://192.168.74.121:82",
    apiUrll: 'http://192.168.74.121:82',
    // apiUrl: "http://192.168.74.224:8085",


    mediaUrl: "https://admin.acadsoc.com.cn",//图片及录音地址
    imgUrl:'http://192.168.74.121/uploads/EnglishCorner/SmallProgramCover/',//英语角图片地址
    baseAshx: "/ECI/WeChatSmallProgram/WeChat_Base.ashx", //域名虚拟路径
    basrAshxs:"/ECI/EnglishCornerApplet/EnglishCornerApplet_Base.ashx",//英语角虚拟域名路径
    recorder: new Recorder('1510645856000042', '412ab8c468fcd728c584990850d3a77d'), //创建一个 Recorder 对象
    innerAudioContext: wx.createInnerAudioContext(), //创建一个音频播放器
    quote: quote,    
    IsAuthorization:null,//用户登录状态
    IsVip:null,
    appSource:"1861458", //渠道来源
    UCUID:null,
    Rank: null,
    Gold: null,
    Experience: null,

  }
})